home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / ml / smlnj107.rea < prev    next >
Encoding:
Text File  |  1996-11-16  |  7.9 KB  |  183 lines

  1.             Standard ML of New Jersey
  2.               Version 107, December 25, 19934
  3.  
  4.      ------------------------------------------------
  5.  
  6. STANDARD ML OF NEW JERSEY COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
  7.  
  8. Copyright 1989, 1990, 1991, 1992, 1993, 1994 by AT&T Bell Laboratories
  9.  
  10. Permission to use, copy, modify, and distribute this software and its
  11. documentation for any purpose and without fee is hereby granted,
  12. provided that the above copyright notice appear in all copies and that
  13. both the copyright notice and this permission notice and warranty
  14. disclaimer appear in supporting documentation, and that the name of
  15. AT&T Bell Laboratories or any AT&T entity not be used in advertising
  16. or publicity pertaining to distribution of the software without
  17. specific, written prior permission.
  18.  
  19. AT&T disclaims all warranties with regard to this software, including
  20. all implied warranties of merchantability and fitness.  In no event
  21. shall AT&T be liable for any special, indirect or consequential
  22. damages or any damages whatsoever resulting from loss of use, data or
  23. profits, whether in an action of contract, negligence or other
  24. tortious action, arising out of or in connection with the use or
  25. performance of this software.
  26.  
  27.     ------------------------------------------------
  28.  
  29. Version 107 of Standard ML of New Jersey (SML/NJ) is an internal working
  30. version that is probably stable enough for use by brave souls.  The
  31. transition from Version 93 to the next general release involves a complete
  32. reworking of almost the entire system.  Version 107 is perhaps 80% of the
  33. way there, but there are still changes to come.
  34.  
  35. This version works on the following machine/OS combinations:
  36.  
  37.   MIPS; Irix 4.x
  38.   MIPS; Irix 5.x
  39.   SPARC; SunOs 4.x
  40.   SPARC; Solarix 2.x
  41.   Alpha; OSF/1 (V 2.0 or later; does not work under V 1.3)
  42.   RS/6000; AIX 3.x (may work on AIX 4.x, but we haven't tested it)
  43.   x86; Linux
  44.   x86; FreeBSD (thanks to Jeffrey Hsu)
  45.  
  46. Here is a list of the files in the distribute.  Note that, unlike in previous
  47. versions, you do not need the compiler source (107-sml-nj.tar.Z) to install
  48. the system.
  49.  
  50.   107-README            This file
  51.   107-INSTALL            Installation instructions
  52.   107-notes.tar.Z        Misc. documentation.
  53.   107-config.tar.Z        Configuration/installation scripts (REQUIRED)
  54.   107-ml-yacc.tar.Z        ML-Yacc source
  55.   107-ml-lex.tar.Z        ML-Lex source
  56.   107-ml-burg.tar.Z        ML-Burg source
  57.   107-smlnj-lib.tar.Z        SML/NJ Library source
  58.   107-cml.tar.Z            CML source
  59.   107-eXene.tar.Z        EXene source
  60.   107-runtime.tar.Z        Run-time system source (REQUIRED)
  61.                 Compiler binaries for specific architectures:
  62.   107-bin.mipseb.tar.Z          Big endian MIPS binaries
  63.   107-bin.sparc.tar.Z          Sparc binaries
  64.   107-bin.alpha32.tar.Z          Alpha binaries
  65.   107-bin.rs6000.tar.Z          RS/6000 binaries
  66.   107-bin.x86.tar.Z          Intel x86 binaries.
  67.  
  68. KNOWN BUGS
  69. In addition to reported open bugs, version 107 suffers from the following
  70. problems:
  71.  
  72.   - there is essentially no documentation (what little there is can be
  73.     found in the notes directory).
  74.  
  75.   - stopping sml using ^Z and then restarting it causes sml to lose contact
  76.     with the terminal input stream under Irix 4.0.5.  This doesn't appear to
  77.     be a problem with Irix 5.x.
  78.  
  79.   - Unsigned division (and thus printing of unsigned numbers) doesn't work on
  80.     the SPARC.
  81.  
  82.   - Big unsigned constants (> 2^30) are unsupported and can cause the system
  83.     to dump core.
  84.  
  85.  
  86. CHANGES FROM 106 to 107
  87. Most of the changes are compiler improvements and bug fixes.  Most of the
  88. visible changes have to do with a reorganization of the ML callable C code.
  89.  
  90.   - eXene has been ported to 107, and a snapshot is included in the release.
  91.     This is very much a working version, but there is some high-level
  92.     documentation in eXene/README.
  93.  
  94.   - the function System.Unsafe.CInterface.c_string has been deleted (ML strings
  95.     are always NULL terminated in 107).  Also, the type of c_function has changed.
  96.  
  97.   - the function System.Unsafe.CInterface.syscall has been eliminated.
  98.  
  99.   - the implementation of System.Directory.getWD has been fixed.  We now use
  100.     the POSIX getcwd() to implement this.
  101.  
  102.   - The ML callable C library in the run-time has been split into a collection
  103.     of libraries, which are organized by related function.  This organization
  104.     should make it somewhat easier to add C code to the system.  See the file
  105.     notes/HOWTO-ADD-C-CODE for more information.
  106.  
  107.  
  108. CHANGES FROM 103 to 106
  109. The last working version that was made available via ftp was 103; here is
  110. a list of the major changes since then:
  111.  
  112.   - Version 106 uses a new run-time system with a multi-generational
  113.     collector.  This affects users and installers of the system in
  114.     several significant ways:
  115.  
  116.       - The new run-time separates the run-time executable from the
  117.     ML heap images.  This means that an application (e.g., sml-sc)
  118.     consists of a run-time system and a heap image.  The run-time
  119.     executables depend on the architecture and OS, while the heap
  120.     image depends on the application and architecture.  There is a
  121.     standard driver shell script that gets created as part of the
  122.     installation process (see the 106-INSTALL file for details).
  123.     The "exportML" and "exportFn" commands generate heap images.
  124.  
  125.       - The new collector tends to use more virtual memory than the
  126.         old collector, but less physical memory.  The virtual memory
  127.         performance will be improved before the next release, but you
  128.         may have trouble running this on machines with small swap spaces.
  129.  
  130.   - Version 106 supports characters as a first class type.  Character
  131.     literals are written as length one strings preceeded by "#" (e.g.,
  132.     #"a", #" ", #"\"", #"\128").  The structure Char defines various
  133.     operations on characters.  As a result of this change, the signature
  134.     of the String structure has changed.  In particular, the functions
  135.     String.length, String.ord and String.ordof no longer exist, and the
  136.     functions implode and explode have different types.  The old versions
  137.     can be defined roughly as follows:
  138.  
  139.       val length = String.size
  140.       val ordof = Char.ord o String.sub
  141.       fun ord s = ordof(s, 0)
  142.       val explode = (map Char.ord) o String.explode
  143.       val implode = String.implode o (map Char.chr)
  144.  
  145.     The Ord exception is no longer raised, instead Subscript is raised.
  146.     Also, the Chr exception has been moved to the Char structure.
  147.  
  148.   - As a result of the changes to the String and the addition of the Char
  149.     structure, ML-Lex, ML-Yacc, the SML/NJ Library, and CML have been changed.
  150.     In the case of ML-Lex and ML-Yacc, you will have to regenerate your
  151.     parsers/scanners using the new version, if you want to use 106.  There
  152.     were significant changes to some of the interfaces in the SML/NJ library
  153.     (e.g., CType, CharSet), but the changes to CML are all internal.  We
  154.     haven't ported eXene to 106 yet, but that will be done soon.
  155.  
  156.   - Version 106 has a different signature for the Array and Vector structures.
  157.     The exceptions Subscript and Size have been moved to the General
  158.     structure.
  159.  
  160.   - Version 106 has generic monomorphic array and vector signatures (MONO_ARRAY
  161.     and MONO_VECTOR).  Currently, the only implementation of these are the
  162.     CharVector and CharArray types, but the RealArray structure will be
  163.     switched over soon.  The type CharVector.vector is the same as String.string.
  164.  
  165.   - Versions are now numbered as integers (i.e., 106 instead of 1.06).  The
  166.     signature of Compiler.Version has changed.
  167.  
  168.   - The get_fd_out function was removed from the IO signature.
  169.  
  170. CHANGES FROM 0.93 to 1.03
  171.   - The top-level environment was restructured; stuff that used to be in
  172.     System has been split into System and Compiler.  Note that the System
  173.     side of this split is definitely NOT stable; it will change again in
  174.     substantial ways.
  175.  
  176.   - The bootstrapping process has changed radically from version 0.93.
  177.     If you don't know about sml-scb and "bin files", this version
  178.     is probably not for you.
  179.  
  180.   - The "source groups" tool has been replaced with "SC", which generally works
  181.     better.
  182.  
  183.